package com.xg.listener;

import com.alibaba.excel.context.AnalysisContext;
import com.alibaba.excel.event.AnalysisEventListener;
import com.xg.model.entity.OneData;

import java.util.ArrayList;
import java.util.List;

public class OneDataListener extends AnalysisEventListener<OneData> {

    // 批次大小（可根据实际情况调整）
    private static final int BATCH_SIZE = 1000;
    private List<OneData> cachedData = new ArrayList<>();

    @Override
    public void invoke(OneData data, AnalysisContext context) {
        cachedData.add(data);

        // 达到批次上限时进行处理
        if (cachedData.size() >= BATCH_SIZE) {
            processBatch(cachedData);
            cachedData.clear();
        }
    }

    @Override
    public void doAfterAllAnalysed(AnalysisContext context) {
        // 处理剩余数据
        if (!cachedData.isEmpty()) {
            processBatch(cachedData);
            cachedData.clear();
        }
    }

    /**
     * 自定义批量处理逻辑（如插入数据库等）
     */
    private void processBatch(List<OneData> dataList) {
        // 示例：打印当前批次大小
        System.out.println("正在处理一批数据，数量：" + dataList.size());

        // TODO: 替换为实际业务逻辑，例如：
        // yourService.batchInsert(dataList);
    }
}
